﻿/*
*************************************************************************
**                                                                      *
** ZERING TEST SCRIPT                                                   *
**                                                                      *
** 数据推送示例程序                                                     *
**                                                                      *
*************************************************************************
**                                                                      *
** 数据源                                                               *
**                                                                      *
*************************************************************************
*/
/* =================================================================== */
/*|                           全局变量                                |*/
/* =================================================================== */
var g_GnlTimer1;var yValue1 = 20;
var g_GnlTimer2;var yValue2 = 30;
var g_GnlTimer3;var yValue3 = 40;
/***********************************************************************/
/*  Function Name : OnInit                                             */
/*---------------------------------------------------------------------*/
/*  FUNCTION : 初始化函数                                              */
/*  OTHERS   :                                                         */
/***********************************************************************/
function OnInit() {
    /*
    *********************************************************************
    ** 加载库函数                                                       *
    *********************************************************************
    */
    API_LoadJs("Lib.js");
    /*
    *********************************************************************
    ** 启动通用定时器                                                   *
    *********************************************************************
    */
    g_GnlTimer1 = API_StartGnlTimer(500, 1, 0, 1);
    g_GnlTimer2 = API_StartGnlTimer(500, 2, 0, 1);
    g_GnlTimer3 = API_StartGnlTimer(500, 3, 0, 1);
    /*
    *********************************************************************
    ** 建立结点表                                                       *
    *********************************************************************
    */
    NODE_TYPE       = new Object;
    NODE_TYPE.Nid   = 123456;
    NODE_TYPE.Pid   = 123456;
    NODE_TYPE.State = "ONLINE";

    MDB_LoadType( NODE_TYPE, "NODE_TYPE");
    
    if ("OK" == MDB_TableNew("NODE_TABLE", "NODE_TYPE", "Nid")) {
        API_Trace("结点表建立成功");
    } else {
        API_Trace("结点表建立失败");
    }

    API_SetRpcHandler("LiveData.NodeReport", RPC_NodeReport );
  
    API_Trace("数据源进程启动完毕");
}
/***********************************************************************/
/*  Function Name : OnTimer                                            */
/*---------------------------------------------------------------------*/
/*  FUNCTION : 定时器消息                                              */
/*  OTHERS   : 向客户端发送随机数                                      */
/***********************************************************************/
function OnTimer(p_Msg) {

    OBJ_ARRAY = MDB_TableQuery("NODE_TABLE", "State like %0","ONLINE" );

    if( 1 == p_Msg.Id )
    {
         yValue1 += Math.round(Math.random() * 20 - 10);
               
         MSG = new Object;
         MSG.tag = "info";
         MSG.src =  "数据源 - 1";
         MSG.yValue = yValue1;

         if( "NO RESULT" != OBJ_ARRAY ){
             for( i=0;i<OBJ_ARRAY.length;i++ ) {

                 API_RpcIdSend
                 (  OBJ_ARRAY[i].Nid,
                    OBJ_ARRAY[i].Pid,
                    "HCTR.WS.TEXT.BROADCAST",
                    1,
                    JSON.stringify(MSG));
             }
         }
    }

    if( 2 == p_Msg.Id )
    {
         yValue2 += Math.round(Math.random() * 30 - 10);
               
         MSG = new Object;
         MSG.tag = "info";
         MSG.src =  "数据源 - 2";
         MSG.yValue = yValue2;

         if( "NO RESULT" != OBJ_ARRAY ){
             for( i=0;i<OBJ_ARRAY.length;i++ ) {
                 API_RpcIdSend
                 (  OBJ_ARRAY[i].Nid,
                    OBJ_ARRAY[i].Pid,
                    "HCTR.WS.TEXT.BROADCAST",
                    2,
                    JSON.stringify(MSG));
             }
         }
    }

    if( 3 == p_Msg.Id )
    {
         yValue3 += Math.round(Math.random() * 40 - 10);
               
         MSG = new Object;
         MSG.tag = "info";
         MSG.src =  "数据源 - 3";
         MSG.yValue = yValue3;

         if( "NO RESULT" != OBJ_ARRAY ){
             for( i=0;i<OBJ_ARRAY.length;i++ ) {
                 API_RpcIdSend
                 (  OBJ_ARRAY[i].Nid,
                    OBJ_ARRAY[i].Pid,
                    "HCTR.WS.TEXT.BROADCAST",
                    3,
                    JSON.stringify(MSG));
            }
         }
    }
}
/***********************************************************************/
/*  Function Name : RPC_NodeReport                                     */
/*---------------------------------------------------------------------*/
/*  FUNCTION : 结点报告函数                                            */
/*  OTHERS   :                                                         */
/***********************************************************************/
function RPC_NodeReport( p_Nid, p_Pid ) {
    /*
    *********************************************************************
    ** 将结点对象插入接点表                                             *
    *********************************************************************
    */
    NODE_OBJ       = new Object;
    NODE_OBJ.Nid   = p_Nid;
    NODE_OBJ.Pid   = p_Pid;
    NODE_OBJ.State = "ONLINE";

    API_Trace(sprintf("结点对象为：%s",JSON.stringify(NODE_OBJ)));
    API_Trace(sprintf("将结点对象插入数据表 -- %s", MDB_TableInsert("NODE_TABLE",NODE_OBJ)));

}
/*
*************************************************************************
**                                                                      *
** ZERING TEST SCRIPT                                                   *
**                                                                      *
** 数据推送示例程序                                                     *
**                                                                      *
*************************************************************************
**                                                                      *
** 数据源                                                               *
**                                                                      *
*************************************************************************
*/